package controller;

import javax.swing.JFileChooser;

import tool.classloader.ClassFilter;
import tool.classloader.FileSystemFilter;

/**indica che il seguente Controller ha la facolta' di poter navigare nel
 * file System per selezionare i file che piu' sono conformi ai suoi obiettivi.
 * Controller che implementano questa interfaccia possiedono:
 * <ul>
 *  <li>i filtri piu' comunemente utilizzati per navigare nel file system ()</li>
 *  <li>un JFileChooser ({@link #filechooser}) per offrire una visuale grafica del
 *  file system stesso</li>
 * </ul>
 * <p>E possibile interscambiare i filtri dal filechooser utilizzando <tt>setFileFilter()</tt>
 * di JFileChooser
 * 
 * @author Koldar
 * @version 1.2
 */
public interface BrowseUser extends ExtensionUser{

	//TODO inserire il filechooser partendo da una data cartella!!!
	
	/**rappresenta una struttura che permette di scegliere un file in filesystem*/
	public final JFileChooser filechooser=new JFileChooser();
	/**data una cartella, filtra tutti i file al suo interno che non siano .class o directory*/
	public final FileSystemFilter DIRECTORYCLASSFILTER=new FileSystemFilter(true,"class & dir",CLASSEXTENSION);
	/**data una cartella, filtra tutti i file al suo interno che non siano .mdmap o directory*/
	public final FileSystemFilter DIRECTORYMDMAPFILTER=new FileSystemFilter(true,"MDMap & dir",MAPEXTENSION);
	/**data una cartella, filtra tutti i file in modo che rimangano solo directories*/
	public final FileSystemFilter DIRECTORYFILTER=new FileSystemFilter(true,"only directories");
	/**data una cartella, filtra tutti i file in modo che rimangano solo le directories e i file jar*/
	public final FileSystemFilter DIRECTORYJARFILTER=new FileSystemFilter(true,"jar & dir",JAREXTENSION);
	/**data una cartella, filtra tutti i file in modo che rimangano solo i file .class*/
	public final FileSystemFilter ONLYCLASSFILTER=new FileSystemFilter(false,"only class",CLASSEXTENSION);
	public final ClassFilter CLASSFILTER=new ClassFilter();
}
